import java.util.StringTokenizer;

import javax.swing.JOptionPane;


public class Maquina implements Runnable{		
	int max=50;
	boolean finjuego=false;
	boolean reTocado=false;
	Tablero tableroEnemigo;
	String[] arrCoordenadas;
	Mensajero mens;
	public Maquina(Tablero p, Mensajero mens){
		tableroEnemigo=p;
		this.mens=mens;
	}
	public void run(){
		do{
			try {
				Thread.sleep(500);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}while(tableroEnemigo.isRepack());
		arrCoordenadas=generarArrayCoordenadas();
		do{
			mens.generarCoor(this);
		}while(!tableroEnemigo.finJuego());
//		System.out.println("La maquina ha ganado");
		JOptionPane.showMessageDialog(null, "La maquina ha ganado");
		System.exit(0);
	}
	
	public String[] generarArrayCoordenadas(){
		String []array=new String[max];
		int n=0;
		for(int i=0;i<10;i++){
			for(int j=0;j<10;j++){
				if(j%2==0){
					if(i%2==0){
						array[n]=i+","+j;
						n++;
					}
				}else{
					if(i%2!=0){
						array[n]=i+","+j;
						n++;
					}
				}
			}
		}
		return array;
	}
	
	public void cosa(){
		notifyAll();
	}
	
	
	public void verArray(String[] param){
		for(int i=0;i<max;i++){
			System.out.println(param[i]);
		}
	}
	
	public int buscarCoor(int x,int y){
		for(int i=0;i<max;i++){
			if(arrCoordenadas[i].equals(x+","+y)){
				return i;
			}
		}
		return -1;
	}
	
	public String[] nuevoArray(String[] param, int x){
		String[] arrAux=new String[--max];
		for(int i=0;i<x;i++){
			arrAux[i]=param[i];
		}
		for(int i=x;i<max;i++){
			arrAux[i]=param[i+1];
			
		}
		param=new String[max];
		for(int i=0;i<max;i++){
			param[i]=arrAux[i];
		}
		return param;
	}
	
	public void ponAgua(int x, int y){
		if(buscarCoor(x-1,y-1)!=-1){
			arrCoordenadas=nuevoArray(arrCoordenadas,buscarCoor(x-1,y-1));
		}
		if(buscarCoor(x-1,y+1)!=-1){
			arrCoordenadas=nuevoArray(arrCoordenadas,buscarCoor(x-1,y+1));
		}
		if(buscarCoor(x+1,y-1)!=-1){
			arrCoordenadas=nuevoArray(arrCoordenadas,buscarCoor(x+1,y-1));
		}
		if(buscarCoor(x+1,y+1)!=-1){
			arrCoordenadas=nuevoArray(arrCoordenadas,buscarCoor(x+1,y+1));
		}		
	}
	

/*
	public static void tocadoBarco(Tablero tab,int barco, int x, int y){
		Tablero tableroEnemigo=tab;
		int d=1;
		final int xIni=x;
		final int yIni=y;
		do{
			x=xIni;
			y=yIni;
			switch(d){
				case 1:x++;break;
				case 2:y++;break;
				case 3:x--;break;
				case 4:y--;break;
			}
			if(tableroEnemigo.barcos[barco].comprobarCoor(x,y)){
				tableroEnemigo.matBotones[x][y].setEnabled(false);
				System.out.println("tocado");
				ponAgua(x,y);
				int posicion=buscarCoor(x,y);
				if(posicion!=-1){
					arrCoordenadas=nuevoArray(arrCoordenadas,posicion);
				}
				if(tableroEnemigo.barcos[barco].estaHundido()){
					hundido=true;
					posicion=buscarCoor(x,y);
					if(posicion!=-1){
						arrCoordenadas=nuevoArray(arrCoordenadas,posicion);
					}
					System.out.println("barco "+barco+" hundido");
				}else{
					switch(d){
						case 1:
							for(int i=1;i<4;i++){
								x=xIni+i+1;
								if(tableroEnemigo.barcos[barco].comprobarCoor(x,y)){
									tableroEnemigo.matBotones[x][y].setEnabled(false);
									System.out.println("tocado");
									ponAgua(x,y);
									posicion=buscarCoor(x,y);
									if(posicion!=-1){
										arrCoordenadas=nuevoArray(arrCoordenadas,posicion);
									}
									if(tableroEnemigo.barcos[barco].estaHundido()){
										hundido=true;
										System.out.println("barco "+barco+" hundido");
									}
								}else{
									System.out.println("agua");
									posicion=buscarCoor(x,y);
									if(posicion!=-1){
										arrCoordenadas=nuevoArray(arrCoordenadas,posicion);
									}
									for(i=1;i<4;i++){
										x=xIni-i;
										if(tableroEnemigo.barcos[barco].comprobarCoor(x,y)){
											tableroEnemigo.matBotones[x][y].setEnabled(false);
											System.out.println("tocado");
											ponAgua(x,y);
											posicion=buscarCoor(x,y);
											if(posicion!=-1){
												arrCoordenadas=nuevoArray(arrCoordenadas,posicion);
											}
											if(tableroEnemigo.barcos[barco].estaHundido()){
												hundido=true;
												System.out.println("barco "+barco+" hundido");
											}
										}
									}
								}
							};
						break;
						case 2:
							for(int i=1;i<4;i++){
								y=yIni+i+1;
								if(tableroEnemigo.barcos[barco].comprobarCoor(x,y)){
									tableroEnemigo.matBotones[x][y].setEnabled(false);
									System.out.println("tocado");
									ponAgua(x,y);
									posicion=buscarCoor(x,y);
									if(posicion!=-1){
										arrCoordenadas=nuevoArray(arrCoordenadas,posicion);
									}
									if(tableroEnemigo.barcos[barco].estaHundido()){
										hundido=true;
										System.out.println("barco "+barco+" hundido");
									}
								}else{
									System.out.println("agua");
									posicion=buscarCoor(x,y);
									if(posicion!=-1){
										arrCoordenadas=nuevoArray(arrCoordenadas,posicion);
									}
									for(i=1;i<4;i++){
										y=yIni-i;
										if(tableroEnemigo.barcos[barco].comprobarCoor(x,y)){
											tableroEnemigo.matBotones[x][y].setEnabled(false);
											System.out.println("tocado");
											ponAgua(x,y);
											posicion=buscarCoor(x,y);
											if(posicion!=-1){
												arrCoordenadas=nuevoArray(arrCoordenadas,posicion);
											}
											if(tableroEnemigo.barcos[barco].estaHundido()){
												hundido=true;
												System.out.println("barco "+barco+" hundido");
											}
										}
									}
								}
							};
						break;
						case 3:
							for(int i=1;i<4;i++){
								x=xIni-i-1;
								if(tableroEnemigo.barcos[barco].comprobarCoor(x,y)){
									tableroEnemigo.matBotones[x][y].setEnabled(false);
									System.out.println("tocado");
									ponAgua(x,y);
									posicion=buscarCoor(x,y);
									if(posicion!=-1){
										arrCoordenadas=nuevoArray(arrCoordenadas,posicion);
									}
									if(tableroEnemigo.barcos[barco].estaHundido()){
										hundido=true;
										System.out.println("barco "+barco+" hundido");
									}
								}else{
									for(i=1;i<4;i++){
										x=xIni+i;
										if(tableroEnemigo.barcos[barco].comprobarCoor(x,y)){
											tableroEnemigo.matBotones[x][y].setEnabled(false);
											if(tableroEnemigo.barcos[barco].estaHundido()){
												hundido=true;
											}
										}
									}
								}
							};
						break;
						case 4:
							for(int i=1;i<4;i++){
								y=yIni-i-1;
								if(tableroEnemigo.barcos[barco].comprobarCoor(x,y)){
									tableroEnemigo.matBotones[x][y].setEnabled(false);
									System.out.println("tocado");
									ponAgua(x,y);
									posicion=buscarCoor(x,y);
									if(posicion!=-1){
										arrCoordenadas=nuevoArray(arrCoordenadas,posicion);
									}
									if(tableroEnemigo.barcos[barco].estaHundido()){
										hundido=true;
										System.out.println("barco "+barco+" hundido");
									}
								}else{
									for(i=1;i<4;i++){
										y=yIni+i;
										if(tableroEnemigo.barcos[barco].comprobarCoor(x,y)){
											tableroEnemigo.matBotones[x][y].setEnabled(false);
											if(tableroEnemigo.barcos[barco].estaHundido()){
												hundido=true;
											}
										}
									}
								}
							};
						break;
					}
				}
			}
			d++;
		}while(!hundido);
		hundido=false;
	}
*/	
}
